package practice.Day29;

/**
 * @Author quan
 * @Description 有假币
 * @Date 2023/6/26 20:26
 */

import java.util.Scanner;

/**
 * 只知道假币的重量比真币的质量要轻，
 * 给你一个天平（天平两端能容纳无限个硬币），请用最快的时间把那个可恶的假币找出来。
 * 问：最多要称几次才能把那个假币找出来？
 * 输入：1≤n≤2^30,输入0结束程序  3 12 0
 * 输出：最多要称几次一定能把那个假币找出来？ 1 3
 */
public class Num1_FalseMoney {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()){
            int n = sc.nextInt();
            //如果输入数字0，表示结束
            if(n == 0){
                break;
            }
            //如果只有一张，则一定是假币
            if(n == 1){
                System.out.println(0);
            } //如果有三张以下的钱，则最多称重一次
            else if (n <= 3) {
                System.out.println(1);
            }  //当假币数量大于三时，进行三等分：
            else if (n > 3) {
                int count = 1;
                while (n >3){
                    //如果能够等分:n表示等分后每份中的数量
                    if(n % 3 == 0){
                        n/=3;
                    }else{//不能等分:要么多一个或者两个：因为均分最快，所以尽可能均分，最大值保持多一个也就是4，而不是5
                        //比如11： 3,4,4而不是分成3,3 5
                        //取最多的那份，再继续分
                        n = n/3+1;
                    }
                    count++;
                }
                System.out.println(count);
            }
        }
    }
}
